79ace986658a417e0371dee2a43f32a69114f3b1,httpcore5-h2/src/main/java/org/apache/hc/core5/http2/impl/nio/ServerHttp2StreamHandler.java,ServerHttp2StreamHandler,consumeHeader,#List#boolean#,169

Before Change


        if (handler == null) {
            throw new H2StreamResetException(H2Error.REFUSED_STREAM, "Stream refused");
        }
        if (handler == null) {
            throw new H2ConnectionException(H2Error.INTERNAL_ERROR,
                    "Unable to handle " + request.getMethod() + " " + request.getPath());
        }
        exchangeHandler = handler;

        context.setProtocolVersion(HttpVersion.HTTP_2);
        context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
        context.setAttribute(HttpCoreContext.HTTP_CONNECTION, connection);
        exchangeHandler.setContext(context);

        httpProcessor.process(request, requestEntityDetails, context);
        connMetrics.incrementRequestCount();

        boolean expectContinue = false;
        if (requestEntityDetails != null) {
            final Header h = request.getFirstHeader(HttpHeaders.EXPECT);
            if (h != null && "100-continue".equalsIgnoreCase(h.getValue())) {
                expectContinue = true;
            }
        }

        if (expectContinue) {
            exchangeHandler.verify(request, requestEntityDetails, new ExpectationChannel() {

                @Override
                public void sendResponse(
                        final HttpResponse response, final EntityDetails responseEntityDetails) throws HttpException, IOException {
                    commitResponse(response, responseEntityDetails);
                }

                @Override
                public void sendContinue() throws HttpException, IOException {
                    commitContinue();
                    exchangeHandler.handleRequest(request, requestEntityDetails, new ResponseChannel() {

                        @Override
                        public void sendResponse(
                                final HttpResponse response, final EntityDetails responseEntityDetails) throws HttpException, IOException {
                            commitResponse(response, responseEntityDetails);
                        }

                        @Override
                        public void pushPromise(
                                final HttpRequest promise, final AsyncPushProducer pushProducer) throws HttpException, IOException {
                            commitPromise(promise, pushProducer);
                        }

                    });
                }

            });
        } else {
            exchangeHandler.handleRequest(request, requestEntityDetails, new ResponseChannel() {

                @Override
                public void sendResponse(
                        final HttpResponse response, final EntityDetails responseEntityDetails) throws HttpException, IOException {
                    commitResponse(response, responseEntityDetails);
                }

                @Override
                public void pushPromise(
                        final HttpRequest promise, final AsyncPushProducer pushProducer) throws HttpException, IOException {
                    commitPromise(promise, pushProducer);
                }

            });
        }
    }

After Change


        httpProcessor.process(request, requestEntityDetails, context);
        connMetrics.incrementRequestCount();

        exchangeHandler.handleRequest(request, requestEntityDetails, new ResponseChannel() {

            @Override
            public void sendInformation(final HttpResponse response) throws HttpException, IOException {
                commitInformation(response);
            }

            @Override
            public void sendResponse(
                    final HttpResponse response, final EntityDetails responseEntityDetails) throws HttpException, IOException {
                commitResponse(response, responseEntityDetails);
            }

            @Override
            public void pushPromise(
                    final HttpRequest promise, final AsyncPushProducer pushProducer) throws HttpException, IOException {
                commitPromise(promise, pushProducer);
            }

        });
    }

    @Override